<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // sort()   数组中自带排序方法   -> 帮助用户快速实现数组排序
    // 返回值: 排序后的原数组
    // 是否影响原数组: 影响

    // 两种排序方式:
    // (1) 字符排序   比较ASCII码
    //  解析:计算机二进制语言,用户输入的数字 字母 标点符号 -> 转化为二进制存储 (每一个字符都有其对应的字符编码 ASCII)
    // (2) 纯数字排序
    // (3)  数组乱序

    // 简单应用
    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var result = list.sort();
    // console.log("返回值:", result);
    // console.log("原数组:", list);


    // console.log(5 > 3);
    // console.log(15 > 3);

    // JS中字符串和字符串比较时,按照从左到右的顺序 比较ASCII码, 第一个不同就比第一个,第一个相同就比较第二个
    // console.log("5" > "3"); // "5" -> 53   "3" -> 51     53 > 51
    // console.log("15" > "3"); // "1" -> 49  "3" -> 51     49 > 51
    // console.log("15" > "13"); // "5" -> 53   "3" -> 51     53 > 51


    // (1) 字符排序
    // var list = [1, 4, 7, 44, 2, 5, "A", 33, 8, "a", 3, 22, 6, 11, 9];
    // list.sort();
    // console.log("原数组:", list);

    // (2) 纯数字排序
    // 传入一个回调函数, 每次两个数进行比较时执行,根据回调函数的返回值 绝对排序方式

    // 回调函数有两个参数,分别表示参与比较的两个元素

    // var list = [1, 4, 7, 44, 2, 5, 33, 8, 3, 22, 6, 11, 9];

    // list.sort(function (a, b) { // 回调函数有两个参数,分别表示参与比较的两个元素
    //     // console.log(a, b);
    //     // return a - b;  //  a - b > 0  => a > b 如果前一个数大于后一个数时交换位置 (大值放后面) => 从小到大
    //     return b - a;  //  b - a > 0  => a < b 如果前一个数小于后一个数时交换位置 (小值放后面) => 从大到小

    // })
    // console.log(list);


    // (3)  数组乱序
    var list = [1, 2, 3, 4, 5, 6, 7, 8, 9];

    list.sort(function () {
        return Math.random() - Math.random();
    })

    console.log(list);







</script>

</html>